﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using SoftwareConsulting.BI11.Studio.UI.Properties;

namespace SoftwareConsulting.BI11.Studio.UI.ProjectExplorer.ClassificationProblems
{
    /// <summary>
    /// Класс обработчика групп задачи классификации
    /// </summary>
    public static class ClassificationProblemGroupsProcessor
    {
        /// <summary>
        /// Таблица цветов групп
        /// </summary>
        public static readonly Color[] Colors = new Color[8]
        { 
            Color.Blue,
            Color.Red,
            Color.Yellow,
            Color.Green,
            Color.Gray,
            Color.Pink,
            Color.Black,
            Color.Violet
        };

        /// <summary>
        /// Таблица картинок групп
        /// </summary>
        public static readonly Bitmap[] Pictures = new Bitmap[8]
        { 
            Resources.group_blue,
            Resources.group_red,
            Resources.group_yellow,
            Resources.group_green,
            Resources.group_gray,
            Resources.group_pink,
            Resources.group_black,
            Resources.group_violet
        };

        /// <summary>
        /// Возвращает скорректированную группу (такую, чтоб попадала в допустимые рамки)
        /// </summary>
        /// <param name="group">группа</param>        
        /// <returns></returns>
        public static int CorrectGroup(int group)
        {
            return CorrectGroup(group, false);
        }

        /// <summary>
        /// Возвращает скорректированную группу (такую, чтоб попадала в допустимые рамки)
        /// </summary>
        /// <param name="group">группа</param>        
        /// <param name="cycle">флаг цикличности корректировки</param>
        /// <returns></returns>
        public static int CorrectGroup(int group, bool cycle)
        {
            return group < 0 ?
                0 :
                group > 7 ?
                (cycle ? 0 : 7) :
                group;
        }

        /// <summary>
        /// Возвращает флаг корректности группы (попадания в допустимые рамки)
        /// </summary>
        /// <param name="group"></param>
        /// <returns></returns>
        public static bool IsCorrectGroup(int group)
        {
            return (group >= 0) && (group <= 7);
        }
    }
}
